﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LibProducto;
using System.Web.Security;

namespace ProyectoIngenieriaSoftware.Administracion
{
    public partial class Formulario_web12 : System.Web.UI.Page
    {
        #region "Variables Globales"

        static int intOpcionGrabar;//variable tipo switche o sentinela que graba dependiendo si es de agregar o modificar

        #endregion

        #region "Metodos Locales"


        private void buscarproducto()
        {

            clsProducto objproducto = new clsProducto();
            objproducto.codprod = Convert.ToInt32(txtCodito.Text);
            if (objproducto.Consultar())
            {
                txtNombre.Text = objproducto.NombreProd;
               
            }
            else lblMsj.Text = "No existe el producto en el sistema por favor agreguelo";

        }
        private void LimpiarDatos(bool limpiar)
        {
            if (limpiar)
            {
                this.txtCodito.Text = "";
                this.txtNombre.Text = "";
                this.txtUbicacionBodega.Text = "";
                this.txtUnidadesDisponibles.Text = "";
            }
        }

        void tipomensajeControles()
        {
            if (intOpcionGrabar == 1)
            {
                txtCodito_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Nombre del Producto buscado";
                txtUbicacionBodega_TextBoxWatermarkExtender.WatermarkText = "Digité Ubicacion Producto";
                txtUnidadesDisponibles_TextBoxWatermarkExtender.WatermarkText = "Digité unidades disponibles";

           }
            if (intOpcionGrabar == 2)
            {
                txtCodito_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Digité Codigoe";
                txtUbicacionBodega_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtUnidadesDisponibles_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";

            }
            if (intOpcionGrabar == 3)
            {
                txtCodito_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtNombre_TextBoxWatermarkExtender.WatermarkText = "Digité Codigoe";
                txtUbicacionBodega_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";
                txtUnidadesDisponibles_TextBoxWatermarkExtender.WatermarkText = "Digité Codigo";

            }
        }

        private void Habilitar()
        {
            //enable es para habilitar o deshabilitar con true o false
            this.UpdatePanelCampos.Visible = false;//Donde estan los textbox codigo y descripcion
            this.MnuOpciones.Items[0].Enabled = true;//Agregar
            this.MnuOpciones.Items[1].Enabled = true;//Modificar
            this.MnuOpciones.Items[2].Enabled = true;//Buscar
            this.MnuOpciones.Items[3].Enabled = false;//Grabar
            this.MnuOpciones.Items[4].Enabled = false;//Cancelar
            this.MnuOpciones.Items[4].Text = "Cancelar";
            LimpiarDatos(true);
            //this.MnuOpciones.Items[5].Enabled = true;//Imprimir
        }

        private void DesHabilitar()
        {
            this.UpdatePanelCampos.Visible = true;
            this.MnuOpciones.Items[0].Enabled = false;
            this.MnuOpciones.Items[1].Enabled = false;
            this.MnuOpciones.Items[2].Enabled = false;
            this.MnuOpciones.Items[3].Enabled = true;
            this.MnuOpciones.Items[4].Enabled = true;
            this.MnuOpciones.Items[4].Text = "Cancelar";
            txtUbicacionBodega.ReadOnly = false;
            txtUnidadesDisponibles.ReadOnly = false;
         //   LimpiarDatos(true);

            //this.mnnOpciones.Items[5].Enabled = false;//Imprimir
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if(Page.IsPostBack)
                if (txtCodito.Text != string.Empty)
                {
                    
                    clsinventaromia objConsultar = new clsinventaromia();
                    objConsultar.CodigoProduto = Convert.ToInt32(txtCodito.Text);
                    if (objConsultar.Consultarexistencia())
                    {
                        txtNombre.Text = Convert.ToString(objConsultar.NombreProducto);
                        txtUnidadesDisponibles.Text = Convert.ToString(objConsultar.UnidadesDiponibles);
                        txtUbicacionBodega.Text = Convert.ToString(objConsultar.UbicacionBodega);
                        lblMsj.Text = "EL inventario ya existe para el producto actualizelo si es necesario";
                    }
                    else
                        lblMsj.Text = "no existen productos el producto en el inventario agreguelo";

                    buscarproducto();
                }
            if(!Page.IsPostBack)  Habilitar(); 
        }

        private void GrabarRegistro()
        {
            switch (intOpcionGrabar)//para saber que opcion  selecciono, el selectedvalue es el que tiene el nombre de las opciones
            //paparce pille solamente tengo el agregar y el buscar
            {
                case 1:
                    lblMsj.Text = "";
                    clsInventario objGrabar = new clsInventario();
                    objGrabar.CodigoProduto = Convert.ToInt32(txtCodito.Text);
                    objGrabar.NombreProducto = txtNombre.Text;
                    objGrabar.UnidadesDiponibles = Convert.ToInt32(txtUnidadesDisponibles.Text);
                    objGrabar.UbicacionBodega = Convert.ToInt32(txtUbicacionBodega.Text);

                    if (objGrabar.Ingresar())
                    {
                        lblMsj.Text = "Grabo correctamente el inventario del producto";
                        LimpiarDatos(true);
                    }
                    else lblMsj.Text = objGrabar.Error;
                    objGrabar = null;
                    Habilitar();
                    break;

                case 2:
                    lblMsj.Text = "";
                    clsInventario objActualizar = new clsInventario();
                    objActualizar.CodigoProduto = Convert.ToInt32(txtCodito.Text);
                    objActualizar.NombreProducto = txtNombre.Text;
                    objActualizar.UnidadesDiponibles = Convert.ToInt32(txtUnidadesDisponibles.Text);
                    objActualizar.UbicacionBodega = Convert.ToInt32(txtUbicacionBodega.Text);
                    if (objActualizar.Ingresar())
                        lblMsj.Text = "Actualizo  el inventario del producto";
                    else lblMsj.Text = objActualizar.Error;
                    objActualizar = null;
                    Habilitar();
                    break;



            }


        }

        protected void MnuOpciones_MenuItemClick(object sender, MenuEventArgs e)
        {

            switch (this.MnuOpciones.SelectedValue)//para saber que opcion  selecciono, el selectedvalue es el que tiene el nombre de las opciones
            {
                case "opcAgregar":
                    if (Roles.IsUserInRole("Cajero")==false)
                    {
                        lblMsj.Text = "";
                        lblTitulo.Text = "Agregar Inventario";
                        intOpcionGrabar = 1;
                        tipomensajeControles();
                        DesHabilitar();
                        //para grabar un maestro->un insert en la BD

                        this.txtCodito.Focus();
                    }   
                    else lblMsj.Text = "No tienes los permisos para agregar un inventario";
                    break;

                case "OpcModificar":
                    if (Roles.IsUserInRole("Cajero") == false)
                    {
                    lblMsj.Text = "";
                    lblTitulo.Text = "Actualización de Inventario";
                    txtCodito.Focus();
                    intOpcionGrabar = 2;
                    tipomensajeControles();
                    DesHabilitar();
                    this.btnBuscar.Enabled = true;
                    }
                     else lblMsj.Text = "No tienes los permisos para Acutalizar un inventario";
                    break;

                case "opcBuscar":
                    if (Roles.IsUserInRole("11") == false)
                    {
                    lblMsj.Text = "";
                    lblTitulo.Text = "Búsquedad de Inventario";
                    intOpcionGrabar = 3;
                    tipomensajeControles();
                    DesHabilitar();
                    btnBuscar.Enabled = true;
                    txtNombre.ReadOnly = true;
                    txtUbicacionBodega.ReadOnly = true;
                    txtUnidadesDisponibles.ReadOnly = true;
                    this.MnuOpciones.Items[3].Enabled = false;
                    txtCodito.Focus();
                    this.MnuOpciones.Items[4].Text = "Salir de la Búsqueda";
                    }
                       else lblMsj.Text = "No tienes los permisos para Buscar un inventario";

                    break;

                case "opcGrabar":
                    GrabarRegistro();
                    break;

                case "opcCancelar":
                    intOpcionGrabar = 0;
                    lblTitulo.Text = "Administración de Inventarios";
                    Habilitar();
                    break;
            }
        }
        #endregion
       
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            clsinventaromia objConsultar = new clsinventaromia();
            objConsultar.CodigoProduto =Convert.ToInt32( txtCodito.Text);
            if (objConsultar.Consultarexistencia())
            {
                txtNombre.Text =Convert.ToString( objConsultar.NombreProducto);
                txtUnidadesDisponibles.Text =Convert.ToString( objConsultar.UnidadesDiponibles);
                txtUbicacionBodega.Text = Convert.ToString(objConsultar.UbicacionBodega);
            }
            else
            lblMsj.Text ="no existen productos inventariados agreguelos por favor";
        }
    }
}